﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;

namespace SOEN341_SCHEDULER_PHASE1
{
    static class ProgramsInitialization
    {

        /// <summary>
        /// Init ENGR Program
        /// </summary>
        /// <param name="edu">Education Program to init</param>
        public static void InitENGR(EducationalProgram edu)
        {

        }

        /// <summary>
        /// Init SOEN program
        /// </summary>
        /// <param name="edu">Education Program to init</param>
        public static void InitSOEN(EducationalProgram edu)
        {
            Course toAdd;
            Course tutorial;
            Course lab;
            TimeTableBlock ttb;
            CustomDateTime cdt;
            Color theCol;
            List<DayOfWeek> dayOfWeek=new List<DayOfWeek>();

            //COMP 335-------------------------------------------------
            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            theCol = Color.Red;
            cdt = new CustomDateTime(20, 30, 21, 20, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP335", "COMP 335 [T]", "EA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            //dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Red;
            cdt = new CustomDateTime(17, 45, 20, 15, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP335", "COMP335", "E", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Red;
            cdt = new CustomDateTime(20, 30, 21, 20, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP335", "COMP335 [T]", "EB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            //dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Red;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt,"SGW", theCol);
            toAdd = new Course("COMP335", "COMP335", "E", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            theCol = Color.Red;
            cdt = new CustomDateTime(13, 15, 14, 05, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP335", "COMP335 [T]", "GA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Red;
            cdt = new CustomDateTime(11, 45, 13, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP335", "COMP335", "G", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Red;
            cdt = new CustomDateTime(13, 15, 14, 05, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP335", "COMP335 [T]", "GB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            cdt = new CustomDateTime(11, 45, 13, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP335", "COMP335", "G", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);


            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Red;
            cdt = new CustomDateTime(15, 45, 16, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN342", "SOEN342 [T]", "HA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Red;
            cdt = new CustomDateTime(11, 45, 13, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN342", "SOEN342", "H", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(15, 45, 16, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN342", "SOEN342 [T]", "HB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(11, 45, 13, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN342", "SOEN342", "H", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(14, 45, 15, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN343", "SOEN343 [T]", "HA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN343", "SOEN343", "H", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(14, 45, 15, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN343", "SOEN343 [T]", "HB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN343", "SOEN343", "H", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(9, 15, 10, 05, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN384", "SOEN384 [T]", "FA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(10, 15, 11, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN384", "SOEN384", "F", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(9, 15, 10, 05, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("SOEN384", "SOEN384 [T]", "FB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            dayOfWeek.Add(DayOfWeek.Friday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(10, 15, 11, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("SOEN384", "SOEN384", "F", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);
            
            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(20, 30, 22, 20, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP345", "COMP345 [T]", "DA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Blue;
            cdt = new CustomDateTime(17, 45, 20, 15, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP345", "COMP345", "DD", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //COMP 249
            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(20, 30, 22, 20, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP345", "COMP345 [T]", "DB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(17, 45, 20, 15, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP345", "COMP345", "DD", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Green;
            cdt = new CustomDateTime(17, 45, 19, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP345", "COMP345 [T]", "NA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(16, 15, 17, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("COMP345", "COMP345", "N", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);
            /*
            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Green;
            cdt = new CustomDateTime(17, 45, 19, 35, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("COMP345", "COMP345 [T]", "NB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(8, 45, 10, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("OO Programming II", "COMP249", "U", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(11, 45, 13, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("OO Programming II", "COMP249 [T]", "UB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Green;
            cdt = new CustomDateTime(8, 45, 10, 00, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("OO Programming II", "COMP249", "U", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);
          
            //ENGR 233
            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(10, 45, 12, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENFR233 [T]", "PA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "P", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(10, 45, 12, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENFR233 [T]", "PB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "P", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(10, 45, 12, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENFR233 [T]", "QA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "Q", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(10, 45, 12, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENFR233 [T]", "QB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Tuesday);
            dayOfWeek.Add(DayOfWeek.Thursday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(13, 15, 14, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "Q", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(17, 45, 19, 25, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENGR233 [T]", "JA", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(16, 15, 17, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "J", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);

            //TUTORIAL
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(19, 40, 21, 20, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            tutorial = new Course("Applied Advanced Calculus", "ENFR233 [T]", "JB", ttb, null, null, null, 40, 0);

            //CLASS
            dayOfWeek = new List<DayOfWeek>();
            dayOfWeek.Add(DayOfWeek.Monday);
            dayOfWeek.Add(DayOfWeek.Wednesday);
            theCol = Color.Yellow;
            cdt = new CustomDateTime(16, 15, 17, 30, dayOfWeek);
            ttb = new TimeTableBlock(cdt, "SGW", theCol);
            toAdd = new Course("Applied Advanced Calculus", "ENGR233", "J", ttb, null, tutorial, null, 40, 3);

            edu.AddCourse(toAdd);
             */
        }

        /// <summary>
        /// Init CIVIL Program
        /// </summary>
        /// <param name="edu">Education Program to init</param>
        public static void InitCIVI(EducationalProgram edu)
        {

        }

        /// <summary>
        /// Init Computer Engineering
        /// </summary>
        /// <param name="edu">Education Program object to init</param>
        public static void InitCOEN(EducationalProgram edu)
        {

        }
        public static void InitELEC(EducationalProgram edu)
        {

        }

        public static void InitMECH(EducationalProgram edu)        
        {
        }
    }
}
